package org.data.replay.config;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

/**
 * 第三方平台配置属性类 使用 @Value 注解绑定 application.yml 中的 platform 配置
 *
 * @author DataReplay
 */
@Data
@Configuration
public class PlatformProperties {
    
    // ==================== 基础连接配置 ====================
    
    /**
     * 主机地址
     */
    @Value("${platform.base.host}")
    private String host;
    
    /**
     * 端口号
     */
    @Value("${platform.base.port}")
    private Integer port;
    
    /**
     * 协议类型（http/https）
     */
    @Value("${platform.base.protocol}")
    private String protocol;
    
    /**
     * 请求超时时间（毫秒）
     */
    @Value("${platform.base.timeout}")
    private Integer timeout;
    
    /**
     * 上下文路径前缀
     */
    @Value("${platform.base.context-path:}")
    private String contextPath;
    
    // ==================== 设备相关接口（通用命名，适用于机组、发动机等）====================
    
    /**
     * 获取设备列表接口路径（通用命名，适用于机组、发动机等）
     */
    @Value("${platform.api.equipment.list}")
    private String equipmentList;
    
    // ==================== 参数相关接口 ====================
    
    /**
     * 查询参数接口路径（通用命名，适用于根据设备编号查询参数等）
     */
    @Value("${platform.api.parameter.query}")
    private String parameterQuery;
    
    // ==================== 数据查询相关接口 ====================
    
    /**
     * 查询数据接口路径
     */
    @Value("${platform.api.data.query}")
    private String dataQuery;
    
    // ==================== 测量相关接口 ====================
    
    /**
     * 查询测量数据接口路径
     */
    @Value("${platform.api.measurement.query}")
    private String measurementQuery;
    
    // ==================== 故障 ====================
    
    /**
     * 查询故障接口路径
     */
    @Value("${platform.api.fault.query}")
    private String faultQuery;
    
    // ==================== 便捷方法 ====================
    
    /**
     * 获取完整的基础URL
     *
     * @return 基础URL
     */
    public String getBaseUrl() {
        StringBuilder url = new StringBuilder();
        url.append(protocol).append("://").append(host).append(":").append(port);
        
        // 处理上下文路径
        if (contextPath != null && !contextPath.isEmpty()) {
            String path = contextPath.trim();
            if (!path.startsWith("/")) {
                url.append("/");
            }
            if (path.endsWith("/")) {
                path = path.substring(0, path.length() - 1);
            }
            url.append(path);
        }
        
        return url.toString();
    }
    
    /**
     * 获取设备列表接口的完整URL（通用命名，适用于机组、发动机等）
     *
     * @return 完整URL
     */
    public String getEquipmentListUrl() {
        return getBaseUrl() + equipmentList;
    }
    
    /**
     * 获取查询参数接口的完整URL（通用命名，适用于根据设备编号查询参数等）
     *
     * @return 完整URL
     */
    public String getParameterQueryUrl() {
        return getBaseUrl() + parameterQuery;
    }
    
    /**
     * 查询数据接口的完整URL
     *
     * @return 完整URL
     */
    public String getQueryDataUrl() {
        return getBaseUrl() + dataQuery;
    }
    
    /**
     * 查询测量数据接口的完整URL
     *
     * @return 完整URL
     */
    public String getQueryMeasurementUrl() {
        return getBaseUrl() + measurementQuery;
    }
    
    /**
     * 查询故障接口的完整URL
     *
     * @return 完整URL
     */
    public String getQueryFaultUrl() {
        return getBaseUrl() + faultQuery;
    }
}
